package map;

import java.util.*;

public class TwoSum {

  /**
   * 使用HashMap<p>
   * 以value作为key，index作为value，即便是value重复也不影响，因为假设输入的值只有一个答案
   *
   * @param nums
   * @param target
   * @return
   */
  public int[] twoSum(int[] nums, int target) {
    if (nums == null || nums.length == 0) {
      return null;
    }
    Map<Integer, Integer> map = new HashMap<>();
    for (int i = 0; i < nums.length; ++i) {
      if (map.containsKey(target - nums[i])) {
        return new int[]{map.get(target - nums[i]), i};
      } else {
        map.put(nums[i], i);
      }
    }
    return null;
  }

  /**
   * 暴力循环
   *
   * @param nums
   * @param target
   * @return
   */
  public int[] twoSum2(int[] nums, int target) {
    if (nums == null || nums.length <= 1) {
      return null;
    }
    for (int i = 0; i < nums.length - 1; ++i) {
      for (int j = i + 1; j < nums.length; ++j) {
        if ((nums[i] + nums[j]) == target && i != j) {
          return new int[]{i, j};
        }
      }
    }
    return null;
  }
}
